#include "stm32f10x.h"                  // Device header
#include "Delay.h"

/**
  * @brief		初始化GPIOB部分引脚服务按键
  * @parm		GPIO_Pin：要配置的引脚
  * @retval		无
  */
void Key_Init(uint16_t GPIO_Pin)
{
	//时钟使能
	RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE);
	//配置GPIO
	GPIO_InitTypeDef GPIO_InitStructure;
	GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU;		//上拉输入
	GPIO_InitStructure.GPIO_Pin = GPIO_Pin;				//配置引脚
	GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;	//I/O口翻转速度
	GPIO_Init(GPIOB, &GPIO_InitStructure);
}

/**
  * @brief		获取按键按下，若两个按键先后相近按下，会返回编号靠后的按键
  * @parm		无
  * @retval		按键按下，根据引脚编号 范围：1 ~ 16
  */
uint8_t Key(void)
{
	uint8_t Key = 0;
	
	if(GPIO_ReadInputDataBit(GPIOB, GPIO_Pin_0) == 0)
	{
		Delay_ms(20);									//过滤抖动
		while(GPIO_ReadInputDataBit(GPIOB, GPIO_Pin_0) == 0);	//等待按键松开
		Delay_ms(20);									//过滤抖动
		Key = 1;
	}
	
	
//	uint16_t Tmp = 0x0001, Bit;
//	for(int i = 0; i < 16; ++i)
//	{
//		Bit = (Tmp << i);
//		if(GPIO_ReadInputDataBit(GPIOB, Bit) == 0)
//		{
//			Delay_ms(20);									//过滤抖动
//			while(GPIO_ReadInputDataBit(GPIOB, Bit) == 0);	//等待按键松开
//			Delay_ms(20);									//过滤抖动
//			Key = i + 1;
//		}
//	}
	return Key;
}


